package practice;

import java.util.Scanner;

public class _07YangHuiTr {
    public static void main(String[] args) {
        int  i, j;
        Scanner scanner = new Scanner(System.in);
        long n = scanner.nextLong();
        scanner.close();

        long[] a = new long[44725];
        a[0] = a[1] = 1L;
        long cnt;
        if(n == 1) {
            System.out.println(1);
            return;
        }
        else{
            /**
             * 可以发现每一行都是先递增后递减的，所以当某个值已经大于10亿时就说明不在这一行了。
             * 接下来看如何找这个大于10亿的值比较好。
             * 首先第一列都是1，第二列（1，2，3...），第三列是的值为（1+2+3...），即（n*n+1）/2，
             * 这样解出来n=44721，再算上前面两行，可以定义n为44724行。
             * 也就是说，当算到这一行时，第三个数已经超过10亿了，
             * 由于此时数列不管向后还是向下都是递增的，所以n只能出现在下一行的第二列，
             * 而第二列的值所在位置则正好是前面那些行所有数字的个数+2，即（n*n+1）+2。
             */
            cnt = 3L;
            for(i = 3; i < 44725; i++){
                for(j = i - 1; j >= 1; j --){
                    //  非常巧妙的算法！！！
                    a[j] += a[j - 1];
                    if(a[j] == n){
                        System.out.println(cnt + i - j);
                        return;
                    }
                }
                cnt += i;
            }
        }
        System.out.println((n + 1) * n / 2 + 2);
    }
}
